iT邦幫忙

0

動態型別

// JS屬於 動態型別
// 執行階段才會賦予確立型別

// typeof 檢視型別
var name = '皮傑先生'
console.log(name); // 型別 string
console.log('皮傑先生'); // 型別 string

// 會發現 值的本身就具備型別 
// 而我們是把值賦予到變數上
// 變數的型別式來自於值的

型別轉換

分為 顯性轉換 (Explicit conversion)隱性轉換 (Implicit conversion)

// 顯性轉換
// 一個變數的值 直接被賦予另一個型別的值
var a = 1;
console.log(typeof a); // number
a = '1'
console.log(typeof a); // string
//隱性轉換
var a = 1;
console.log(a , typeof a); // 1 number
a = a + '';
console.log(a , typeof a); // 1 string (number 轉 string)
a = a * 5;
console.log(a , typeof a); // 5 number (string 轉 number)


原始型別及物件型別

原始型別列表

  1. Boolean 布林
  2. Null 空值
  3. Undefined 未定義
  4. Number 數值
  5. String 字串
  6. BigInt(new) 整數數值(new)
  7. Symbol(new) Symbol(new)

上述這些原始型別都有各自的方法(ex:字串英文字轉大寫)
那為什麼他們有各自的方法呢???
因為他們有額外的包裹物件

  1. Boolean 布林 -- new Bollean()
  2. Null 空值
  3. Undefined 未定義
  4. Number 數值 - new Number()
  5. String 字串 - new String()
  6. BigInt(new) 整數數值(new) - BigInt()
  7. Symbol(new) Symbol(new) - Symbol()
    (Null , Undefined 沒有包裹物件 )

這裡來看 null 與 not defined 的型別

var d = null;
console.log(typeof d); // object

// JS長久以來的錯誤 但無法修正 因有的網站透過此錯誤來完成網站應用

console.log(name);
// name is not defined
console.log(typeof name);
// undefined
// 是 typeof 針對 not defined的保護措施

剛剛我們有稍微提到包裹物件
這邊先舉個例子

var a = 'Jay ';
console.log(a.length); // 4
console.log(a.toUpperCase()); // JAY
console.log(a.trim()); // 去頭尾空白

那 a 究竟還有那些方法??
這時我們就可以利用包裹物件來查詢

// 建構式宣告字串
var a = 'Jay';
var e = new String(a);
console.log(e); //請看下圖
console.log(typeof e); // object

https://ithelp.ithome.com.tw/upload/images/20201014/201230395lD74jOLU1.jpg

這裡的 proto 就是包裹物件的原型(方法皆在這)
但要注意
當我們宣告原始型別,要避免用建構式宣告
因為型別會是物件(object)

那今天的介紹就到這裡
若有任何問題 或 內容有誤
請跟我說唷/images/emoticon/emoticon07.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言